package weifei.util;


import java.math.BigDecimal;
import java.math.RoundingMode;

public class GCJ02Util
{
    private final static double EARTH_RADIUS = 6378.137;//地球半径


    public static double rad(double d) {
        return d * Math.PI / 180.0;         //经纬度转换成三角函数中度分表形式。
    }

    /**
     * 计算距离两点的距离
     * @param longitude1 经度1
     * @param latitude1 纬度1
     * @param longitude2 经度2
     * @param latitude2 纬度2
     * @return double 距离 单位km 精确到米
     * */
    public static double distance(double longitude1, double latitude1, double longitude2, double latitude2)
    {
        double radLat1 = GCJ02Util.rad(latitude1);
        double radLat2 = GCJ02Util.rad(latitude2);
        double lat_difference_a = radLat1 - radLat2;
        double lng_difference_b = GCJ02Util.rad(longitude1) - GCJ02Util.rad(longitude2);
        double s = 2 * Math.asin(
                Math.sqrt(
                        Math.pow(Math.sin(lat_difference_a / 2), 2) +
                        Math.cos(radLat1)
                                * Math.cos(radLat2)
                                * Math.pow(Math.sin(lng_difference_b / 2), 2)
                )
        );
        s *= GCJ02Util.EARTH_RADIUS;
        s = new BigDecimal(s).setScale(3, RoundingMode.HALF_UP).doubleValue();
        return s;
    }

}

